﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using QLVatTu.HeThong;

namespace QLVatTu.Class
{
    class KetNoiDB
    {
    
        public SqlConnection cn = new SqlConnection();
        public string GetConnection()
        {
            string con = "";
            if (QLVatTu.Properties.Settings.Default.XacThuc == "SQL Server Authentication")
            {
                con = " Data Source = " + QLVatTu.Properties.Settings.Default.TenMayChu +
                    "; Initial Catalog = " + QLVatTu.Properties.Settings.Default.TenCSDL +
                    "; User ID = " + QLVatTu.Properties.Settings.Default.TenTaiKhoan +
                    "; Password = " + QLVatTu.Properties.Settings.Default.MatKhau;
            }
            else
            {
                con = " Data Source = " + QLVatTu.Properties.Settings.Default.TenMayChu +
                    "; database = " + QLVatTu.Properties.Settings.Default.TenCSDL +
                    "; Integrated Security = True; Connect Timeout = 30; User Instance = False";

            }
            return con;

        }
        public bool KetNoi()
        {
            string Chuoiketnoi = this.GetConnection();
            try
            {
                cn = new SqlConnection(Chuoiketnoi);
                cn.Open();
                return true;
            }
            catch
            {
                MessageBox.Show("Không kết nối được cơ sở dữ liệu ", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);

                frmCauHinh frm = new frmCauHinh();
                frm.ShowDialog();
            }
            return false;

        }
        public DataTable getTable(string sql)
        {
            try
            {
                if (cn.State == ConnectionState.Closed)//kiem tra xem cn co dong ko
                {
                    cn.Open();
                }
               // DataSet ds = new DataSet();//lu du lieu tam thoi doi voi moi truong
                SqlDataAdapter dta = new SqlDataAdapter(sql, cn);//dinh nghia chuoi truy van dua tren ket noi cn
                DataTable tbl = new DataTable();
                dta.Fill(tbl);
               // DataTable tbl = ds.Tables[0];// so 0 nghia la lay bang dau tien trong dataset

                return tbl;
            }
            catch
            {
                MessageBox.Show("Không lấy được cơ sở dữ liệu ", "Thông Báo ", MessageBoxButtons.OK, MessageBoxIcon.Error);
               // MessageBox.Show("Lỗi", ex.ToString());
            }
            return null;

        }

        public string LayDuLieu(string sql)
        {
            // dựa vào câu truy vấn sql để đưa ra 1 giá trị thông qua tên hàm 
            string temp = "";
            try
            {
                SqlCommand cmd = new SqlCommand(sql, cn);//khai báo một đối tượng thực hiện chuỗi truy vấn sql dựa trên kết nối đc lưu trữ trong đối tương cn
                SqlDataReader Drd;//lưu trữ kết quả từ cmd
                if (cn.State == ConnectionState.Closed)
                {
                    cn.Open();
                }
                Drd = cmd.ExecuteReader();//thuc hien lenh truy van 
                if (Drd.HasRows)
                {
                    Drd.Read(); //Đọc lấy một dòng dữ liệu đầu tiên trong drd
                    temp = Drd.GetValue(0).ToString();
                }
                Drd.Close();
                cn.Close();
                //luu y : neu chuoi sql truyen vao la sql=select maquyen,tenquyen from tbl_quyenhan
                //neu muon lay ma quyen thi de so 0(=vitri ma quyen trong select), ten quyen sd 1

            }
            catch
            {
                //MessageBox.Show("khong lay duoc du lieu ", "Thong bao ", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return temp;

        }
        public string SinhMa(string id, string TenBang, string Pre)
        {
            string tam = "";

            tam = LayDuLieu("select max(" + id + ")from " + TenBang);
            if (tam == "")
            {
                tam = "00000";
            }
            //tach 3 ki tu cuoi
            //tam = tam.Substring(2, 3);//bat dau tu ky tu thu 2 lay 3 ky tu (2:so ky tu batt dau , 3:so ky tu can lay )
            tam = tam.Substring(2, 3);//bat dau tu ky tu thu 2 lay 3 ky tu (2:so ky tu batt dau , 3:so ky tu can lay )
            int i = int.Parse(tam);//chuyen chuoi tam sang so ;
            i++;
            if (i > 99)
            {
                tam = Pre + i.ToString();
            }
            else if (i > 9)
            {
                tam = Pre + "0" + i.ToString();
            }

            else
            {
                tam = Pre + "00" + i.ToString();
            }


            return tam;
        }
        public void Insert_Table(string TenBang, string dsCot, string dsGiaTri)
        {
            string sql = " INSERT INTO " + TenBang + "(" + dsCot + ") VALUES (" + dsGiaTri + ")";
            try
            {
                if (cn.State == ConnectionState.Closed)
                {
                    cn.Open();
                }
                SqlCommand cmd = new SqlCommand(sql, cn);
                cmd.ExecuteNonQuery();
                cn.Close();

            }
            catch
            {
                MessageBox.Show("Lỗi ", "Thông báo ", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }


        }
        public void Update_Table(string TenBang, string ChuoiCapNhat, string DieuKien)
        {
            string sql = "UPDATE " + TenBang + " SET " + ChuoiCapNhat + " WHERE " + DieuKien;
            try
            {
                if (cn.State == ConnectionState.Closed)
                {
                    cn.Open();

                }
                SqlCommand cmd = new SqlCommand(sql, cn);
                cmd.ExecuteNonQuery();
                cn.Close();

            }
            catch
            {
                MessageBox.Show("Cập nhật không thành công ", "Thông Báo ", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        public void Delete_Table(string TenBang, String DieuKien)
        {
            string sql = " DELETE " + TenBang + " WHERE " + DieuKien;
            try
            {
                if (cn.State == ConnectionState.Closed)
                {
                    cn.Open();

                }
                SqlCommand cmd = new SqlCommand(sql, cn);
                cmd.ExecuteNonQuery();
                cn.Close();

            }
            catch
            {
                MessageBox.Show("Xóa dữ liệu không thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        public void LayComboBox(ComboBox cbName, string FileValue, string FileText, string dieukien, string TableName, string sort)
        {
            string sql = "";
            sql = "select " + FileValue + "," + FileText + " FROM " + TableName + " Where " + dieukien + " order by " + FileValue + "" + sort;

            SqlCommand cmd = new SqlCommand(sql, cn);
            DataTable tbl = new DataTable();

            //khai báo 2 cột ID và Tên cho banrg tbl
            DataColumn col1 = new DataColumn("ID", typeof(string));
            DataColumn col2 = new DataColumn("Ten", typeof(string));

            //Add 2 cột vừa khai báo vào bảng tbl
            tbl.Columns.Add(col1);
            tbl.Columns.Add(col2);

            DataRow row = null;
            SqlDataReader dr;
            //try
            //{
            if (cn.State == ConnectionState.Closed)
            {
                cn.Open();
            }
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                row = tbl.NewRow();//tạo 1 dòng mới cho bản tbl
                tbl.Rows.Add(row);//Add dòng  mới vào bảng tbl

                row["ID"] = dr.GetValue(0).ToString();//Lấy dữ liệu trong cột 1 của dr gán vào cột ID của tbl
                row["Ten"] = dr.GetValue(1).ToString();//Lấy dữ liệu trong cột 2 của dr gán vào cột Ten của tbl


            }
            cn.Close();

            //}
            //catch
            //{

            //}
            cbName.DataSource = tbl;
            cbName.DisplayMember = "Ten";
            cbName.ValueMember = "ID";
        }
       
        public void LayComboBox1(ComboBox cbName, string FileValue, string dieukien, string TableName, string sort)
        {
            string sql = "";
            sql = "select " + FileValue + " FROM " + TableName + " Where " + dieukien + " order by " + FileValue + "" + sort;

            SqlCommand cmd = new SqlCommand(sql, cn);
            DataTable tbl = new DataTable();

            //khai báo 2 cột ID và Tên cho banrg tbl
            DataColumn col1 = new DataColumn("ID", typeof(string));
            //DataColumn col2 = new DataColumn("ID", typeof(string));

            //Add 2 cột vừa khai báo vào bảng tbl
            tbl.Columns.Add(col1);
            //tbl.Columns.Add(col2);

            DataRow row = null;
            SqlDataReader dr;
            //try
            //{
            if (cn.State == ConnectionState.Closed)
            {
                cn.Open();
            }
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                row = tbl.NewRow();//tạo 1 dòng mới cho bản tbl
                tbl.Rows.Add(row);//Add dòng  mới vào bảng tbl

                row["ID"] = dr.GetValue(0).ToString();//Lấy dữ liệu trong cột 1 của dr gán vào cột ID của tbl
                //row["ID"] = dr.GetValue(1).ToString();//Lấy dữ liệu trong cột 2 của dr gán vào cột Ten của tbl


            }
            cn.Close();

            //}
            //catch
            //{

            //}
            cbName.DataSource = tbl;
            cbName.DisplayMember = "ID";
            //cbName.ValueMember = "ID";
        }

        public DataTable CreateTrangThai()
        {
            DataTable trangthai = new DataTable();
            trangthai.Columns.Add("TrangThai", typeof(bool));
            trangthai.Columns.Add("TenTrangThai", typeof(string));
            DataRow khongsudung = trangthai.NewRow();
            khongsudung["TrangThai"] = false;
            khongsudung["TenTrangThai"] = "Chưa phê duyệt";
            trangthai.Rows.Add(khongsudung);
            DataRow sudung = trangthai.NewRow();
            sudung["TrangThai"] = true;
            sudung["TenTrangThai"] = "Đã phê duyệt";
            trangthai.Rows.Add(sudung);
            return trangthai;
        }

        public DataTable CreateGioiTinh()
        {
            DataTable gioitinh = new DataTable();
            gioitinh.Columns.Add("GioiTinh", typeof(bool));
            gioitinh.Columns.Add("TenGioiTinh", typeof(string));
            DataRow nam = gioitinh.NewRow();
            nam["GioiTinh"] = true;
            nam["TenGioiTinh"] = "Nam";
            gioitinh.Rows.Add(nam);
            DataRow nu = gioitinh.NewRow();
            nu["GioiTinh"] = false;
            nu["TenGioiTinh"] = "Nữ";
            gioitinh.Rows.Add(nu);
            return gioitinh;
        }

        public void ThucHienCauLenhSQL(string sql)
        {
            try
            {
                if (cn.State == ConnectionState.Closed)
                {
                    cn.Open();

                }
                SqlCommand cmd = new SqlCommand(sql, cn);
                cmd.ExecuteNonQuery();
                cn.Close();

            }
            catch
            {
            }
        }
    }
}
